<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>JSDoc: Source: common/ComponentX.js</title>

    <script src="scripts/prettify/prettify.js"> </script>
    <script src="scripts/prettify/lang-css.js"> </script>
    <!--[if lt IE 9]>
      <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
    <![endif]-->
    <link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css">
    <link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css">
</head>

<body>

<div id="main">

    <h1 class="page-title">Source: common/ComponentX.js</h1>

    



    
    <section>
        <article>
            <pre class="prettyprint source linenums"><code>/**
 * Created by seeker910 on 13-12-31.
 */
//"use strict";
Rsd.define('Rsd.common.ComponentX', {
    extend: 'Rsd.common.Object',
    requires: ['Rsd.common.Layouter'],
    xtype: 'component-x', 
    cache: Rsd.isDebug,
    singleton:false,
    //dom: null, 
    /*
    * dom 加密标识
    * */
    domFlag: null,
    /*
    * dom 加密值
    * */
    domFlagValue: '',
    /**
     * 
     */
    domTagName: 'div',
    /*
    * dom Element classname
    * */
    cls: '',
    /*
    * 计量单位
    * */
    //sizeUnit:'px',
    /*
    * dom.style.margin
    * '10 10 10 10' or {top:10px,right:10px,bottom:10px,left:10px}
     */
    margin: null,
    /**
     * dom.style.inset
     * '10 10 10 10' or {top:10px,right:10px,bottom:10px,left:10px}
     */
    inset:null,
    /*
   * 可拖动
   * */
    draggable: false,
     /**
      * 
      */
    tabIndex: null,
    shadow: false, 
    /**
    * @desc 控制display属性，隐藏后dom所在位置不会被占用
    * */
    hidden: false,
    /**
     * @desc 控制visibility,设置为不可见时， dom所在位置仍然被占用
     * */
    //visible:true,
    /*
    * */
    disabled: false,
    /**
    @description 是否打印
     */
    print:true,
    /*
    * 已执行doLayout
    * */
    isLayout:false,
    /**
    *  @desc {top|right|bottom|left:50} dom.style.position = absolute ;
     *
    * */
    floating: false,

    /**
    * @desc {top|right|bottom|left:50} dom.style.position = fixed
    * */
    fixed: false,
    /*
    * ctrl 或 body的hover
    * */
    useHoverStyle: false,
    /** 
    * @description ctrl or body  style.overflow value
    * null ,auto,visible,hidden
    * */
    overflow: null,
    /*
    * listeners:{
            'click':{
                element:'dom',
                fn:function (sender,event) {
                    alert('hello');
                     }
                }
            }
    * */
    listeners: null,
    /**
    *@description dom Element 的 name 属性,数据源映射键值
    * */
    name: '',
    /*
    * 通过element属性指定dom元素的style,默认为dom
    * {
    *    element:'dom',
    *    color:'red'
    * }
    */
    //style:null,
    /*
    * 父控件
    * */
    //parent: null,
    //event :对象级属性，先注册后触发，不会被继承，执行过程不受子类控制，
    // 功能等于this.on('beforeinit',function(){}),支持IOC
    beforeInit: null,
    //event:功能等于this.on('afterinit',function(){}),支持IOC
    afterInit: null,
    //event:功能等于this.on('beforelayout',function(){}),支持IOC
    beforeLayout: null,
    //event:功能等于this.on('afterlayout',function(){}),支持IOC
    afterLayout: null,
    //event:功能等于this.on('beforerender',function(){}),支持IOC
    beforeRender: null,
    //event:功能等于this.on('afterrender',function(){}),支持IOC
    afterRender: null,
    /*
    * 对象创建于哪个控件
    * */
    from:null,
    /**
     *  */ 
    constructor: function ComponentX(config) {

        config = config || {};
        this.apply(config);

    },
    /**
     *
     *
     * */
    init: function init() {
        var me = this;

        this.callParent();

        me.events.fire(me, 'beforeinit', {});
        me.onBeforeInit();

        me.initComponent();

        if (Rsd.isFunction(me.initComponentEx)) {
            me.initComponentEx.call(me);
        }
        me.onAfterInit();
        me.events.fire(me, 'afterinit', {});
        return this;

    },

    /**
     * @description initComponent 处理dom对象的创建，dom结构，样式，事件注册
     * */
    initComponent: function initComponent() {
        var me = this;
        var _header = me.header|| me.label ||{visible:false};
        if(_header.visible === false)//_header不显示时，使用body||ctrl 代替dom
        {
            var _body = me.body||me.ctrl||{};
            if(_body.tagName == 'svg')
            {
                var _doc = window.svgDocument ||  window.document ;
                me.dom = _doc.createElementNS(this.ns, "svg");
            }
            else
            {
                me.dom = document.createElement(_body.tagName || me.domTagName); 
            } 
        }
        else
        {
            me.dom = document.createElement(me.domTagName);
        }
        
        me.dom.classList.add('x-componentx-dom');
        me.addCls('dom',me.cls) ;
        me.elements['dom'] = me.dom; 
        me.dom.id = me.id;

        if (me.name) {
            me.dom.setAttribute("name", me.name)
        }
        me.dom.setAttribute('draggable',this.draggable);
        me.dom.setAttribute(me.domFlag || Rsd.domFlag || 'RSD', me.domFlagValue || Rsd.domFlagValue || '');
        me.dom.setAttribute("rsdtype", me.xtype);
        me.dom.setAttribute("from",me.from||(me.parent&amp;&amp;me.parent.id)||'rsd');
        me.dom.style.opacity = 0;
        me.dom.style.visibility = me.visible ? 'visible' :'hidden';

         
        if(_header.visible!==false)
        {
            var _position = _header.position||'top'; 

            switch (_position.toLowerCase()) {
                case 'top': 
                    me.addCls('dom','x-componentx-top');
                    break;
                case 'bottom': 
                me.addCls('dom','x-componentx-bottom');
                    break;
                case 'left':
                    me.addCls('dom','x-componentx-left');
                    break;
                case 'right':
                    me.addCls('dom','x-componentx-right');
                    break;
                default:
            }
            
        }
        
        if(!me.print)
        {
            me.dom.classList.add('x-no-print');
        }

        var _l = ['top','right','bottom','left'];
        if (me.floating) {
            me.dom.classList.add('x-componentx-floating');
            if(Rsd.isObject(me.floating))
            {

                for(var i in _l)
                {
                    var _p = _l[i];
                    if(me.floating.hasOwnProperty(_p))
                    {
                        me.dom.style[_p] = Rsd.isNumber(me.floating[_p])?(me.floating[_p]+me.sizeUnit):me.floating[_p];
                    }
                }
            }
        }

        if (me.fixed) {
            me.dom.classList.add('x-componentx-fixed');
            if(Rsd.isObject(me.fixed))
            {
                for(var i in _l)
                {
                    var _p = _l[i];
                    if(me.fixed.hasOwnProperty(_p))
                    {
                        me.dom.style[_p] = Rsd.isNumber(me.fixed[_p])?(me.fixed[_p]+me.sizeUnit):me.fixed[_p];
                    }
                }

            }
        }

        if (me.cls) {
            me.addCls('dom', me.cls);
        }
 
        if (me.useHoverStyle) { 
            me.dom.classList.add('x-componentx-hover');
        }

        if (me.hidden) {
            me.hide()
        }

        //me.dom.style.pointerEvents = 'none';

        me.dom.onkeydown = function (evt) {

            var _key = '';
            if(evt.altKey)
            {
                _key = 'alt';
            }
            if(evt.shiftKey)
            {
                _key = 'shift';
            }
            if(evt.ctrlKey)
            {
                _key = 'ctrl';
            }
            if(Rsd.isEmpty(_key))
            {
                me.exeHotKeyFun(evt.code);
            }
            else
            {
                me.exeHotKeyFun(_key + '+' + evt.key);
            }
        };

        return this;
    },

    /**
    @description 类级别 在自身beforerender之后发生 ，初始化之前
     * */
    onBeforeInit: function onBeforeInit() {

    },

    /**
     @description 在自身afterrender之前发生 ，初始化之后
     * */
    onAfterInit: function onAfterInit() {
        var me = this;
        if (me.listeners) {

            for (var name in me.listeners) {
                var _event = me.listeners[name];
                if (_event.element == undefined || _event.element == null) {
                    throw new Error('event [' + name + '] element is null.');
                }
                var _el = me.elements[_event.element];
                //console.log(name,_event.element,_el,me.elements);

                var _evt_fn = function (e) {
                    //var _t = e.toElement || e.originalTarget || e.target;
                    me.listeners[e.type].fn.call(me, me, e);    //sender event
                };

                if (_el) {
                    if (_el.addEventListener) {
                        _el.addEventListener(name, _evt_fn, true);
                    }
                }
            }
        }

        if(this.beforeInit)
        {
            this.on('beforeinit',this.beforeInit);
        }
        if(this.afterInit)
        {
            this.on('afterinit',this.afterInit);
        }


        if(this.beforeRender)
        {
            this.on('beforerender',this.beforeRender);
        }

        if(this.afterRender)
        {
            this.on('afterrender',this.afterRender);
        }

        if(this.beforeLayout)
        {
            this.on('beforelayout',this.beforeLayout);
        }

        if(this.afterLayout)
        {
            this.on('afterlayout',this.afterLayout);
        }
    },

    /** 
     @public
     @description 用于布局控件，对于先隐藏，布局后再显示对控件，需要重新调用该方法。
     * */
    doLayout: function doLayout() {

        this.markTime('layoutStartTime');
        var me = this;
         //监控 doLayout 执行次数
         //console.trace('in comX doLayout',this.id,this.width);
        setTimeout(function () {
            me.onBeforeLayout();
            me.layouter.layout(me);
            me.isLayout = true;

            me.onAfterLayout();

        },30);
        return this;
    },

    /** 
    * @public
    * */
    onBeforeLayout: function onBeforeLayout() {
        this.events.fire(this, 'beforelayout', {});
    },

    /**
     * @public
     * */
    onAfterLayout: function onAfterLayout() {

        this.events.fire(this, 'afterlayout', {});

    },

    /**
    * @private
    * * */
    render: function render(parent) {

        var me = this;
        var _parent = parent || me.parent;
        if(_parent == null || _parent == undefined)
        { 
            throw new Error('Component\'s(id: \'' + this.id + '\') parent is null.');
        }
        if (Rsd.isString(_parent)) {
            _parent = document.getElementById(_parent);
        }

        if (_parent instanceof Rsd.container.Component) {
            if(_parent.body.element == null)
            {
                throw new Error('Component\'s(id: \'' + this.id + '\') parent (id is:'+_parent.id+') is null.');
            }
            _parent = _parent.body.element;
            
        }

        if (!me.id) {
            throw new Error(me.xtype + ' component id is null.');
        }

        if (_parent == null) { 
            throw new Error('Component\'s(id: \'' + this.id + '\') parent is null or is not Rsd.container.Component or is not dom.');
        }

        if(_parent instanceof  Redjs)
        {
            _parent = document.body;
        }

        if (typeof Element != 'undefined'
            &amp;&amp; (Rsd.isType(_parent, Element) || Rsd.isType(_parent, HTMLBodyElement))) {

            _parent.appendChild(me.dom);

        } else {

            if (!(_parent instanceof Element)) {
                console.error("追加组件失败,请查看日志。");
                console.trace("未能追加组件["+me.$className+"],parent不是有效的组件。");
                console.error(me);
                console.error(_parent);
            }
            else {
                console.error("浏览器不支持Element类型。");
            }
        }


        return this;

    },

    /**
    * @public
    * */
    renderTo: function renderTo(parent) {
        var me = this; 
        if(parent==null)
        {
            throw new Error("argument parent is null.");
        }
        setTimeout(function renderTo() {
            if(!me.isRendered())
            {
                me.onBeforeRender();
                me.render(parent);
                me.onAfterRender();
            }

        },0);

        return this;
    },
    /**
     * @description 自身及所有子对象render前
     * */
    onBeforeRender: function onBeforeRender() {

        this.events.fire(this, 'beforerender', {});
    },
    /**
     * @description 自身及所有子对象初始化结束，render结束
     * */
    onAfterRender: function onAfterRender() {
        this.events.fire(this, 'afterrender', {});
    },

    /**
     * @description 注册事件
     * @aram name ：名称
     * @aram  args :数组
     * */
    on: function on(name, fn) {

        if (!name || name == '') {
            throw new Error('argument \'name\' is null.');
        }
        if (Rsd.isFunction(fn)|| Rsd.isString(fn)) {

            this.events.add(this, name, fn);

        }
        else
        {
            throw new Error('argument \'fn\' is not a function object or string object.');
        }

    },
    /**
     * @description 触发事件
     * @aram name ：名称
     * @aram  args :数组
     */
    fire:function fire(name,args)
    {
        if (!name || name == '') {
            throw new Error('argument \'name\' is null.');
        }
       
        this.events.fire(this, name, args);
    },
    
    /**
    *  @description 配置项 值为空时，取dom值
    * */
    getHeight:function getHeight() {
        if (Rsd.isNullOrUndefined(this.height) &amp;&amp; this.isLayout) {
         
            return this.dom.clientHeight();
        }

        if (typeof (this.height) == 'string') {

            if (this.height.endsWith('%')) {
                return this.dom.clientHeight;
            }
            return this.toPxValue(this.height);
        }
        if (typeof (this.height) == 'number') {
            return this.toPxValue(this.height + this.sizeUnit);
        }

        return this.height;

    },

    /**  
    * @description 配置项 值为空时，取dom值
    * */
    getWidth:function getWidth() {
        if (Rsd.isNullOrUndefined(this.width) &amp;&amp; this.isLayout) {
            return this.dom.clientWidth() ;
        }

        if (typeof (this.width) == 'string') {

            if (this.width.endsWith('%')) {
                return this.dom.clientWidth;
            }
            return this.toPxValue(this.width);
        }
        if (typeof (this.width) == 'number') {

            return this.toPxValue(this.width + this.sizeUnit);
        }
        return this.width;


    },

    /** 
     * */ 
    toPxValue : function toPxValue(value) {
        if (Rsd.isEmpty(value)) {
            return 0;
        }

        if (typeof (value) == 'string') {

            if (value.endsWith('px')) {
                return parseFloat(value);
            }
            if (value.endsWith('rem')) {
                return Rsd.getRem() * parseFloat(value);
            }
            if (value.endsWith('em')) {
                console.error('暂未实现em 到 px 的转换。');
                return parseFloat(value);
            }

        }
        if (typeof (value) == 'number') {

            return value;
        }

    },

    /** 
     * */ 
    remove: function remove() {
        //debugger;
        if (this.dom &amp;&amp; this.dom.parentNode) {
            try {


                var itemNode = this.dom;
                itemNode.parentNode.removeChild(itemNode);

                var _temp = this.dom;
                if (_temp &amp;&amp; _temp.parent) {
                    _temp.remove();
                }

            } catch (ex) {
                console.error('移除对象失败：');
                console.error(ex);
            }

        }
        if (Rsd.objects[this.id]) {
            delete Rsd.objects[this.id];
            //Rsd.objects[this.id]=null;
        }

    },

    /** 
     * */ 
    addCls: function addCls(ele, cls) {
        var _ele, _cls;
        if (arguments.length == 1) {
            _ele = 'dom';
            _cls = arguments[0];
        }
        if (arguments.length == 2) {
            _ele = arguments[0];
            _cls = arguments[1];
        }
        var _arr = [];
        if (Rsd.isString(_cls) &amp;&amp; _cls.length > 0) {
            _arr = _cls.split(' ');
        }
        if (Rsd.isArray(_cls)) {
            _arr = _cls;
        }
        if (Rsd.isString(_ele)) {
            _ele = this.elements[_ele];
        }

        if (_ele instanceof Element) {
            for (var i in _arr) {
                if (!Rsd.isEmpty(_arr[i])&amp;&amp;!this.containCls(_ele, _arr[i])) {

                    _ele.classList.add(_arr[i]);
                }
            }
        }
        return this;
    },

    /** 
     * */ 
    containCls: function containCls(ele, cls) {

        var _ele, _cls;
        if (arguments.length == 1) {
            _ele = 'dom';
            _cls = arguments[0];
        }
        if (arguments.length == 2) {
            _ele = arguments[0];
            _cls = arguments[1];
        }
        var _b = true;

        if (Rsd.isString(_ele)) {
            _ele = this[_ele];
        }
        if (_ele instanceof Element) {
            
            if(_ele.classList.contains)
            {
                _b = _ele.classList.contains(_cls);
            }
            else
            {
                try 
                {
                    //_b = (' ' + _ele.className + ' ').indexOf(' ' + _cls + ' ') > -1;
                    //_b = $(_ele).hasClass(_cls);

                } catch (ex) 
                {
                        Rsd.error('containCls', 'Rsd.common.ComponentX', ex);
                }
            }
            
        }

        return _b;
    },

    /**
     * */
    removeCls: function removeCls(ele, cls) {
        var _ele, _cls;
        if (arguments.length == 1) {
            _ele = 'dom';
            _cls = arguments[0];
        }
        if (arguments.length == 2) {
            _ele = arguments[0];
            _cls = arguments[1];
        }
        if (Rsd.isString(_ele)) {
            _ele = this[_ele];
        }
        
        if (_ele instanceof Element &amp;&amp; this.containCls(_ele, _cls)) {

            if(_ele.classList.remove)
            {
                _ele.classList.remove(_cls);
            }
            else
            {
                //兼容处理
                //var reg = new RegExp('(\\s|^)' + _cls + '(\\s|$)');
                //_ele.className = _ele.className.replace(reg, ' ');
            }
            
        }
        return this;
    },
    
    /**
     * */
    toggleCls: function toggleCls(ele, cls) {
        var _ele, _cls;
        if (arguments.length == 1) {
            _ele = this.dom;
            _cls = arguments[0];
        }
        if (arguments.length == 2) {
            _ele = arguments[0];
            _cls = arguments[1];
        }
        if (this.containCls(_ele, _cls)) {
            this.removeCls(_ele, _cls);
        }
        else {
            this.addCls(_ele, _cls);
        }
        return this;
    },

    /**
     * */
    changeCls: function changeCls(ele, oldcls, newcls) {
        var _ele, _oldcls, _newcls;
        if (arguments.length == 2) {
            _ele = 'dom';
            _oldcls = arguments[0];
            _newcls = arguments[1];
        }
        if (arguments.length == 3) {
            _ele = arguments[0];
            _oldcls = arguments[1];
            _newcls = arguments[2];
        }
        if (this.containCls(_ele, _oldcls)) {

            this.removeCls(_ele, _oldcls);
        }
        if (!this.containCls(_ele, _newcls)) {

            this.addCls(_ele, _newcls);
        }
        return this;
    },

    /**
     * */
    isDisabled: function isDisabled() {
        if(this.dom)
        {
            return this.dom.getAttribute("disabled") == 'true';
        }
        return false;
         
    },

    /**
     * */
    isHidden: function isHidden() {

        if(this.dom)
        {
            this.getElComputedStyle(this.dom,"display") =='none';
        }
         
        return false;
    },

    /**
     * */
    isRendered: function isRendered() {
        return this.dom != null &amp;&amp; this.dom.parentNode != null;
    },

    /**
     * */
    isDestroyed: function isDestroyed() {
        return Rsd.objects[this.id] == undefined || Rsd.objects[this.id] == null;
    },

    /**
     * */
    setDisabled: function setDisabled(disabled) {
        this.disabled = disabled;
        if (disabled) {
            this.dom.style.pointerEvents = 'none';
            this.dom.classList.add('x-container-disabled');
        }
        else {
            this.dom.style.pointerEvents = 'all';
            this.dom.classList.remove('x-container-disabled');
        }
    },

    /**
     @description 必须在show之后引用
     @param {int|string} 'left'
     @param {int|string} 'top',
     @param {int|string} 'bottom'
     @param {int|string} 'right'
     * */
    setPosition: function setPosition(left, top, bottom, right) {

        var position = {};

        if (arguments.length == 1 &amp;&amp; Rsd.isObject(arguments[0])) {
            position = arguments[0];
        }
        if (arguments.length == 2) {
            position['top'] = top;
            position['left'] = left;
        }

        if (arguments.length > 2) {
            position['top'] = top;
            position['right'] = right;
            position['bottom'] = bottom;
            position['left'] = left;
        }

        for (var i in position) {
            if (Rsd.isNullOrUndefined(position[i])) {
                continue;
            }
            if (Rsd.isNumber(position[i])) {
                position[i] = position[i] + (this.sizeUnit||'px');
            }
            else {
                position[i] = position[i];
            }
        }

        this.dom.style.top = position.top;
        this.dom.style.right = position.right;
        this.dom.style.bottom = position.bottom;
        this.dom.style.left = position.left;

        return this;
    },

    /**
     * @description 隐藏dom
     * */
    hide: function hide(speed, callback) {

        var _animate = null;
        var _speed = 0;
        var _callback = null;
        var _style=null;
        var _delay=null;
        for(var i =0;i&lt; arguments.length;i++) {

            if(arguments[i]==null || arguments[i]==undefined)
            {
                continue;
            }
            if (Rsd.isFunction(arguments[i])) {
                _callback = arguments[i];
                continue;
            }
            if (Rsd.isObject(arguments[i])) {
                _style = arguments[i];
                continue;
            }
            if (_animate==null &amp;&amp; Rsd.isString(arguments[i])) {
                _animate = arguments[i];
                continue;
            }

            if (_speed == 0 &amp;&amp; Rsd.isNumber(arguments[i])) {
                _speed = arguments[i];
                continue;
            }
            if (_speed > 0 &amp;&amp; Rsd.isNumber(arguments[i])) {
                _delay = arguments[i];
                continue;
            }
        }

        var me = this;

        //this.events.fire(this, 'beforehide', arguments);
        //先置空 display属性 ，然后通过动画隐藏 显示
        me.__dom_display =  me.dom.style.display||null; 

        var _param = _style||{};

        var _fn = function () {
          
            me.setElStyle('dom',{display:'none'});
            //me.dom.style.display = 'none';

            Rsd.callFunction(me,_callback);
        }
        setTimeout(function () {

            if (Rsd.isEmpty(_param) &amp;&amp; _animate) {
                console.error( _animate + '动画参数映射，暂未开发。');
                //_animate 动画参数映射 _param={};
            }

            if (!Rsd.isEmpty(_param) || _speed > 0) {

                me.animate(_param, _speed, _delay || 0,'ease-out', _fn);

            }else
            {
                _fn();
            }

        },0);


        //this.events.fire(this, 'afterhide', arguments);
        return this;
    },

    /**
     *  @public
     *  @description 将控件以动画的形式将对象显示出来
     *  @param {string|Object} animate 动画：fadeIn,slideDown,{top,30,left:100,backgroudColor:'red'}
     *  @param speed 速度
     *  @callback callback
     * */
    show: function show(animate,speed, callback) {

        //console.log('comx-'+this.id);

        var me = this;
        me.timing['showStartTime'] = new Date().getTime();
        var _animate = null;
        var _speed = 0;
        var _callback = null;
        var _style=null;
        var _fun=null;
        var _delay=null;
        for(var i =0;i&lt; arguments.length;i++) {

            if(arguments[i]==null || arguments[i]==undefined)
            {
                continue;
            }
            if (Rsd.isFunction(arguments[i])) {
                _callback = arguments[i];
                continue;
            }
            if (Rsd.isObject(arguments[i])) {
                _style = arguments[i];
                continue;
            }
            if (_animate==null &amp;&amp; Rsd.isString(arguments[i])) {
                _animate = arguments[i];
                continue;
            }

            if (_speed == 0 &amp;&amp; Rsd.isNumber(arguments[i])) {
                _speed = arguments[i];
                continue;
            }
            if (_speed > 0 &amp;&amp; Rsd.isNumber(arguments[i])) {
                _delay = arguments[i];
                continue;
            }
        }

        var me = this;
        //还原 display 值
        me.dom.style.display = me.__dom_display=='none'?null:me.__dom_display;
        //
        var _param = _style||{};

        if (!Rsd.isEmpty(_param) || !Rsd.isEmpty(_animate)) {
            //me.dom.style.top='0px';
            //me.dom.style.left='0px';
        }
  
        setTimeout(function () {

            if (Rsd.isEmpty(_param) &amp;&amp; _animate) {

                //_animate 动画参数映射 _param={};
                switch (_animate.toLowerCase())
                {
                    case 'fadein':
                        _param={opacity:1};
                        _speed=_speed||150;
                        _fun = 'linear';

                    break;
                    default:
                        console.error( _animate + '动画参数映射，暂未开发。');
                        break;
                }
            }

            if (!Rsd.isEmpty(_param) || _speed > 0) {
                
                me.animate(_param, _speed, _delay || 0, _fun||'ease-in',_callback);
            }
            else
            {
                Rsd.callFunction(me,_callback);  
            }

        },50);
       
        return this;
    },

    /**
     * @public
     * @description 切换显示与控件的隐藏状态
     * */
    toggle: function toggle(speed, callback) {
        if(this.isHidden())
        {
            this.show(speed,callback);
        }else
        {
            this.hide(speed,callback);
        }
        return this;
    },
    /**
     *@public
     *@description 初始化DropdownBox控件，将要显示的控件，添加到DropdownBox中，并设置DropdownBox的style。
     *@param {object}  style DropdownBox的初始样式
     *@param {string}  boxCls DropdownBox的样式名称
     *@param {string}  tipCls DropdownBox的tip控件样式名称
     * */
    initDropdownBox: function initDropdownBox(style,boxCls,tipCls) {

        var me = this;
        var _box = this.dropdownBox;

        if (Rsd.isEmpty(_box)) {

            _box = document.createElement('div');
            _box.setAttribute('id',me.id+"_dropdownbox");
            _box.classList.add(boxCls||'x-rsd-dropdown-box');
            _box.onclick = function (e) {
                 
                _box.cancelClose = true; 
                e.isCancel = true;

                return false;
            } 
            this.dom.appendChild(_box);
            this.dropdownBox = _box;
        }
        _box.innerHTML = '';

        var _tip = document.createElement('div');
        _tip.classList.add(tipCls||'x-tip');
        _box.appendChild(_tip);

        this.setElStyle(_box,style||{});

        _box.style.display = 'none';

        return this;
    },
    /**
    * @public
    * @description 每个控件都有一个内部的DropdownBox,默认显示位置在该控件dom内部定位，也可以在显示指定。
    * @description 在显示DropdownBox前，需要在控件的onAfterInit方法中通过initDropdownBox初始化DropdownBox的样式。
    * @description 展示DropdownBox，DropdownBox的内容设置，通过属性DropdownBox（ dom 对象）的设置。
     * @param {object} ctrl 展示DropdownBox的容器
     * @param {object} style DropdownBox的样式对象
    * */
     showDropdownBox: function showDropdownBox(ctrl, style) {
 
        var _ctrl = ctrl||this.dom;
        var _style = style||{};

        var _box = this.dropdownBox;
        if (_box) {
            this.setElStyle(_box,_style); 
            if( _box.style.display == 'none')
            {
                _box.style.display = null;
                _box.style.visibility = 'hidden'; 
                setTimeout(function(){
                    _box.style.visibility = 'visible';
                },250);
            } 
          
            var me = this;
            //注册全局click 事件延时加入 队列 防止click 事件 关闭显示
            setTimeout(function(){
                Rsd.events.add(Rsd,'click',_box.id,function (e) {
 
                    if(e.target == me.ctrl.element || e.target == me.dropdownBox)
                    {
                        //根据事件注册规则，返回flase 不移除注册方法
                        return false;
                    }
                    me.closeDropdownBox();
    
                },true);
            },100);
           
        }

        if (_ctrl instanceof Rsd.common.ComponentX &amp;&amp; (_ctrl.dom == null
            || _ctrl.dom.parentNode == null
            || _ctrl.dom.parentNode != _box)) {

            _ctrl.renderTo(_box);

            _ctrl.show();
            _ctrl.setPosition(10, 10);
            return this;
        }
        if (_ctrl instanceof HTMLElement) {
            _ctrl.appendChild(_box);
            return this;
        }
        if (_ctrl instanceof Node) {
            _ctrl.appendChild(_box);
            return this;
        }

        return this;
    },
    /**
     * @public
    *  @description 关闭 DropdownBox
    * */
     closeDropdownBox: function closeDropdownBox() {
 
        var _box = this.dropdownBox;
        if(_box == undefined || _box == null )
        {
            return this;
        }
        _box.style.display = 'none'; 
         //注销 全局事件click 
         Rsd.events.remove(Rsd,'click',_box.id);
         return this; 
    },


    /**
    *@public
     * @description 显示控件正在加载
     * @param {string} msg 提示信息
     * @param {cls} msg Rsd.control.WaitingBox的cls 属性
    * */
    showLoading: function showLoading(msg, cls) {

        var me = this;

        if (this.__loadingBox) {
            this.__loadingBox.close();
            this.__loadingBox=null;
        }

        if (this.__loadingBox == undefined || this.__loadingBox == null) {

            this.__loadingBox = Rsd.create('Rsd.control.WaitingBox', {
                //width:'100%',
                //height:'100%',
                message: msg || '正在加载...',
                cls: cls || 'x-loading-box',
                border: false
            });
        }
        //异步加载 是位置计算更准确
        setTimeout(function(){
            if(me.__loadingBox)
            {

                var _x = (me.dom.clientWidth - 250) / 2;
                var _y = (me.dom.clientHeight - 50) / 2;
                me.__loadingBox.showDialog(me.dom,{left:_x, top:'40%'} );

            }
        },100);
       
        return this.__loadingBox;
    },
    /**
    *@public
     * @description 关闭加载框
    * */
    closeLoading: function closeLoading() {
        if (this.__loadingBox) {
            this.__loadingBox.close();
            this.__loadingBox=null;
        }
        return this;
    },
    /**
    *  @public
     * @description 清楚注册的热键
    * */
    clearHotKey: function clearHotKey(key) {
        if (Rsd.isEmpty(this.__hotKey||Rsd.isEmpty(key))) {
            return this;
        }
        if (arguments.length == 0) {
            this.__hotKey = {};
            return;
        }
        delete this.__hotKey[key.toLowerCase()];
        return this;
    },
    /**
    * @public
     * @description 注册热键
    * */
    registerHotKey: function hotKey(key, fn, args) {
        if(Rsd.isEmpty(key))
        {
            return this;
        }
        this.__hotKey = this.__hotKey || {};
        this.__hotKey[key.toLowerCase()] = fn;
        return this;
    },
    /**
    *@public
     * @description 触发热键事件执行
    * */
    exeHotKeyFun: function exeHotKeyFun(key) {

        if (Rsd.isEmpty(this.__hotKey)||Rsd.isEmpty(key)) {
            return this;
        }
        Rsd.callFunction(this, this.__hotKey[key.toLowerCase()]);
        return this;
    },

    /**
     * @public
    * @description 设置transform 属性
     * */
    transform: function transform(value) {
 
        this.dom.style.transform = value;
        return this;
    },

    /**
     @description 设置transition属性,实现动画效果的基本方法
     @param  params:{
        left:'250px',
        opacity:'0.5',
        height:'150px',
        width:'150px'
     }
     @param speed
     @param delay
     @param fun:{linear|ease|ease-in|ease-out|ease-in-out|cubic-bezier(n,n,n,n);}
     @param callback
    * */
    animate: function animate(params, speed,delay,fun, callback) {

        var _style = params||{};
        var _speed = speed||0;
        var _delay = delay||0;
        var _fun = fun||'ease-in';
        var _callback = callback;

        if(arguments.length &lt; 5 )
        {
            for(var i =0;i&lt; arguments.length;i++) {
                if (Rsd.isFunction(arguments[i])) {
                    _callback = arguments[i];
                }
                if (Rsd.isObject(arguments[i])) {
                    _style = arguments[i];
                }
                if (Rsd.isString(arguments[i])) {
                    _fun = arguments[i];
                }
                if (_speed == 0 &amp;&amp; Rsd.isNumber(arguments[i])) {
                    _speed = arguments[i];
                }
                if (_speed > 0 &amp;&amp; Rsd.isNumber(arguments[i])) {
                    _delay = arguments[i];
                }
            }
        }

        var me = this;
        me.dom.style.transitionDuration= (_speed/1000.00) + "s";
        me.dom.style.transitionProperty="none";
        var _ps = '';
        for(var p in _style) {
            _ps += p + ',';
        }

        if(_ps.length >0)
        {
            _ps = _ps.substring(0, _ps.length - 1);
            me.dom.style.transitionProperty=_ps;
        }
        me.dom.style.transitionTimingFunction= _fun;
        me.dom.style.transitionDelay=(_delay/1000.00) + "s"

        me.setElStyle(me.dom,_style);

        setTimeout(function () {
            Rsd.callFunction(me,_callback);
        },_speed+10);

        return this;
    },

    /**
     * @public
     * @description 获取触屏到滑动信息:{direction:'none',speed:1000,angle:0}
     * */
    getTouched:function getTouched(startx, starty, endx, endy,starttime,endtime) {

        var _angx = endx - startx;
        var _angy = endy - starty;
        var _speed = endtime - starttime;

        var _rs = {direction:'none',speed:(_speed||100)*10,angle:0};

        //如果滑动距离太短
        if (Math.abs(_angx) &lt; 2 &amp;&amp; Math.abs(_angy) &lt; 2) {
            return _rs;
        }

        var angle = Math.atan2(_angy, _angx) * 180 / Math.PI;
        _rs.angle = angle;
        if (angle >= -135 &amp;&amp; angle &lt;= -45) {
            _rs.direction = 'up';
        } else if (angle > 45 &amp;&amp; angle &lt; 135) {
            _rs.direction = 'down';
        } else if ((angle >= 135 &amp;&amp; angle &lt;= 180) || (angle >= -180 &amp;&amp; angle &lt; -135)) {
            _rs.direction = 'left';
        } else if (angle >= -45 &amp;&amp; angle &lt;= 45) {
            _rs.direction = 'right';
        }

        return _rs;
    },

    /*
    *
    * */
    getElComputedStyle: function (el, name) {
        var _pv = document.defaultView.getComputedStyle(el, null);
        return _pv[name]
    },
    /*
     * */
    getElStyleValue: function (el, name) {
        return $(el).css(name);
    },
    /*
     * */
    setElStyleValue: function (el, name, value) {

        var _dom = el;
        if (Rsd.isString(el)) {
            _dom = this.elements[el] ;
        }
        if (_dom instanceof Element) {
            _dom.style.setProperty(name, value, 'important');
        }

        return this;
    },
    /**
    *@description 设置dom 元素style属性值
    * */
    setElStyle:function setElStyle(el,style)
    {
        var _dom = el;
        var _style = style||{};

        if(Rsd.isString(el))
        {
            _dom = this.elements[el];
        }
         
        Rsd.setElStyle(_dom,_style,this.sizeUnit || 'px');
         
    },

    /**
     * @param {stirng|Element} el:dom对象
     * */
    setElAttribute: function setElAttribute(el, name, value) {
        if (Rsd.isString(el)) {
            this.elements[el].setAttribute(name, value);
        }
        if (el instanceof Element) {
            el.setAttribute(name, value);
        }

        return this;
    },
    /**
     * @param {stirng|Element} el:dom对象
     *
     */
    getElAttribute: function getElAttribute(el, name) {
        if (Rsd.isString(el)) {
            return this.elements[el].getAttribute(name);
        }
        if (el instanceof Element) {
            return el.getAttribute(name);
        }
        return null;
    },
    /**
     * @description dom节点滚动到可视区
     * */
    scrollIntoView:function scrollIntoView(top)
    {
        var dom =  document.getElementById(this.id);
        if(dom)
        {
            dom.scrollIntoView(top);
        }
    }

},function(type){
    {
        var _elementsGetter = function () {

            if (this.__elements == undefined) {
                this.__elements = {};
            }
            return this.__elements;
        };

        this.defineProperty(type,"elements", _elementsGetter, _domSetter,true);
    }

    {
        var _domGetter = function () {

            if (this.__dom == undefined) {
                this.__dom = null;
            }
            return this.__dom;
        };
        var _domSetter = function (dom) {
            this.__dom = dom;
        }

        this.defineProperty(type,"dom", _domGetter, _domSetter,false);
    }

     {
        var _layouterGetter = function () {
            var _com = this;
            if (_com.__layouter == null) {
                _com.__layouter = Rsd.create('Rsd.common.Layouter', {});
            }
            return  _com.__layouter;
        };
        this.defineProperty(type,"layouter", _layouterGetter, null,false);
    }

     {
        var _styleGetter = function () {
            var _com = this;

            if (_com.__style == null) {
                _com.__style = {};
            }
            return _com.__style;
        };
        var _styleSetter = function (style) {
            var _com = this;
            Rsd.apply(_com.style, style);
            
            if(_com.isLayout)
            {
                var _sizeUnit = _com.sizeUnit||'px';
                var _element = _com.style.element;
                if(_com.style.element)
                {
                    delete _com.style.element;
                }
                
                _com.setElStyle(_element||_com.dom,_com.style,_sizeUnit);
                if(_element)
                {
                    _com.style.element = _element;
                }
            }
           
             
        }

        this.defineProperty(type,"style", _styleGetter, _styleSetter,false);
    }

    {
        var _positionGetter = function () {
            if(this.___position == undefined)
            {
                this.___position ={};

            }
            return this.dom?{top:this.dom.top,right:this.dom.right,bottom:this.dom.bottom,left:this.dom.left}:this.___position;
        };

        this.defineProperty(type,"position", _positionGetter, null,true);
    }
    //

    if (!Rsd.common.ComponentX.prototype.hasOwnProperty("events")) {
        var _eventsGetter = function () {
            var _com = this;
            if (_com.__events == null) {
                _com.__events = Rsd.create('Rsd.common.EventList', {parent:this});
            }
            return  _com.__events;
        };

        this.defineProperty(type,"events", _eventsGetter, null,true);

    }

    var _widthGetter = function () {

        return this.__width;
    };

    var _widthSetter = function (value) {
        if (!value) {
            return;
        }
        this.__width = value;

        if(this.dom)
        {
            this.dom.style.width = (this.__width + (Rsd.isString(this.__width)?'' : this.sizeUnit||'px'));
        }
    };
    this.defineProperty(type,"width", _widthGetter, _widthSetter,false);

    var _heightGetter = function () {

        return this.__height;

    };

    var _heightSetter = function (value) {
        if (!value) {
            return;
        }
        this.__height = value;

        if(this.dom) {
            this.dom.style.height = (this.__height + (Rsd.isString(this.__height) ? '' : this.sizeUnit||'px'));
        }

    };
    this.defineProperty(type,"height", _heightGetter, _heightSetter,false);

    //
    var _sizeUnitGetter = function () {
        if(Rsd.isEmpty(this.__sizeUnit) &amp;&amp; this.parent &amp;&amp; this.parent instanceof  Rsd.common.ComponentX)
        {
            this.__sizeUnit = this.parent.sizeUnit;
        }
        return this.__sizeUnit||'px';

    };

    var _sizeUnitSetter = function (value) {
        this.__sizeUnit = value;
    };
    this.defineProperty(type,"sizeUnit", _sizeUnitGetter, _sizeUnitSetter,false);

    var _visibleGetter = function () {

        return  Rsd.isNullOrUndefined(this.__visible) || this.__visible;
    };

    var _visibleSetter = function (value) {
        this.__visible = value;
        if(this.dom) {
            this.dom.style.visibility = value ? 'visible' : 'hidden';
        }
    };
    this.defineProperty(type,"visible", _visibleGetter, _visibleSetter,false);

    var _dropdownBoxGetter = function () {

        return  this.___dropdownBox;
    };

    var _dropdownBoxSetter = function (value) {
        this.___dropdownBox = value;

    };
    this.defineProperty(type,"dropdownBox", _dropdownBoxGetter, _dropdownBoxSetter,false);

});


</code></pre>
        </article>
    </section>




</div>

<nav>
    <h2><a href="index.html">Home</a></h2><h3>Namespaces</h3><ul><li><a href="global.html#Rsd">Rsd</a></li><li><a href="Rsd.common.html">common</a></li><li><a href="Rsd.container.html">container</a></li><li><a href="Rsd.control.html">control</a></li><li><a href="Rsd.data.html">data</a></li><li><a href="Rsd.template.html">template</a></li><li><a href="Rsd.widget.html">widget</a></li></ul><h3>Classes</h3><ul><li><a href="Redjs.html">Redjs</a></li><li><a href="Rsd.data.Ajax.html">Ajax</a></li><li><a href="Rsd.data.ModelSchema.html">ModelSchema</a></li><li><a href="Rsd.data.Service.html">Service</a></li><li><a href="window.Rsd.LogApi.html">LogApi</a></li></ul><h3>Global</h3><ul><li><a href="global.html#gbkToUTF8">gbkToUTF8</a></li><li><a href="global.html#mmToPx">mmToPx</a></li><li><a href="global.html#pxToMm">pxToMm</a></li><li><a href="global.html#unicodeToUTF8">unicodeToUTF8</a></li><li><a href="global.html#_btn_preview">_btn_preview</a></li><li><a href="global.html#_btn_save">_btn_save</a></li><li><a href="global.html#_imageItemDblClick">_imageItemDblClick</a></li><li><a href="global.html#accept">accept</a></li><li><a href="global.html#add">add</a></li><li><a href="global.html#addCls">addCls</a></li><li><a href="global.html#addControl">addControl</a></li><li><a href="global.html#addCookie">addCookie</a></li><li><a href="global.html#addItem">addItem</a></li><li><a href="global.html#addNode">addNode</a></li><li><a href="global.html#addObject">addObject</a></li><li><a href="global.html#addService">addService</a></li><li><a href="global.html#addTotalRow">addTotalRow</a></li><li><a href="global.html#addTreeNode">addTreeNode</a></li><li><a href="global.html#afterClose">afterClose</a></li><li><a href="global.html#afterShow">afterShow</a></li><li><a href="global.html#albumsItemDblClick">albumsItemDblClick</a></li><li><a href="global.html#albumsItemViewDetail">albumsItemViewDetail</a></li><li><a href="global.html#allFields">allFields</a></li><li><a href="global.html#alwaysWrap">alwaysWrap</a></li><li><a href="global.html#animate">animate</a></li><li><a href="global.html#appId">appId</a></li><li><a href="global.html#app_afterLayout">app_afterLayout</a></li><li><a href="global.html#apply">apply</a></li><li><a href="global.html#arrayConcat">arrayConcat</a></li><li><a href="global.html#authCode">authCode</a></li><li><a href="global.html#authorization">authorization</a></li><li><a href="global.html#autoCompleteHandler">autoCompleteHandler</a></li><li><a href="global.html#autoExpanded">autoExpanded</a></li><li><a href="global.html#autoLoad">autoLoad</a></li><li><a href="global.html#autoScrollIntoView">autoScrollIntoView</a></li><li><a href="global.html#backgroundImage">backgroundImage</a></li><li><a href="global.html#beforeClose">beforeClose</a></li><li><a href="global.html#beforeShow">beforeShow</a></li><li><a href="global.html#bgColors">bgColors</a></li><li><a href="global.html#bindEvent">bindEvent</a></li><li><a href="global.html#blankspan">blankspan</a></li><li><a href="global.html#block">block</a></li><li><a href="global.html#border">border</a></li><li><a href="global.html#btn_add">btn_add</a></li><li><a href="global.html#btn_add_albums">btn_add_albums</a></li><li><a href="global.html#btn_close">btn_close</a></li><li><a href="global.html#btn_new_image">btn_new_image</a></li><li><a href="global.html#btn_preview">btn_preview</a></li><li><a href="global.html#btn_publish">btn_publish</a></li><li><a href="global.html#btn_refesh_ds">btn_refesh_ds</a></li><li><a href="global.html#btn_refresh">btn_refresh</a></li><li><a href="global.html#btn_reset">btn_reset</a></li><li><a href="global.html#btn_save">btn_save</a></li><li><a href="global.html#btn_save_and_publish">btn_save_and_publish</a></li><li><a href="global.html#btn_share">btn_share</a></li><li><a href="global.html#btn_show_selector">btn_show_selector</a></li><li><a href="global.html#build">build</a></li><li><a href="global.html#buildColumns">buildColumns</a></li><li><a href="global.html#buildRows">buildRows</a></li><li><a href="global.html#buildTree">buildTree</a></li><li><a href="global.html#button">button</a></li><li><a href="global.html#callFunction">callFunction</a></li><li><a href="global.html#changeCls">changeCls</a></li><li><a href="global.html#checkRecord">checkRecord</a></li><li><a href="global.html#checkSessionServiceName">checkSessionServiceName</a></li><li><a href="global.html#checkToken">checkToken</a></li><li><a href="global.html#checkValue">checkValue</a></li><li><a href="global.html#checkbox">checkbox</a></li><li><a href="global.html#circle">circle</a></li><li><a href="global.html#clear">clear</a></li><li><a href="global.html#clearHotKey">clearHotKey</a></li><li><a href="global.html#clearLocal">clearLocal</a></li><li><a href="global.html#clearSelected">clearSelected</a></li><li><a href="global.html#clearSession">clearSession</a></li><li><a href="global.html#clone">clone</a></li><li><a href="global.html#close">close</a></li><li><a href="global.html#closeBtn">closeBtn</a></li><li><a href="global.html#closeDB">closeDB</a></li><li><a href="global.html#closeDropdownBox">closeDropdownBox</a></li><li><a href="global.html#closeLoading">closeLoading</a></li><li><a href="global.html#closeWaiting">closeWaiting</a></li><li><a href="global.html#codeMember">codeMember</a></li><li><a href="global.html#collapseAll">collapseAll</a></li><li><a href="global.html#colorMember">colorMember</a></li><li><a href="global.html#compile">compile</a></li><li><a href="global.html#compress">compress</a></li><li><a href="global.html#constructor">constructor</a></li><li><a href="global.html#contain">contain</a></li><li><a href="global.html#containCls">containCls</a></li><li><a href="global.html#copy">copy</a></li><li><a href="global.html#createInnerControl">createInnerControl</a></li><li><a href="global.html#crossDomain">crossDomain</a></li><li><a href="global.html#currentIndex">currentIndex</a></li><li><a href="global.html#data">data</a></li><li><a href="global.html#dataSource">dataSource</a></li><li><a href="global.html#dataStore">dataStore</a></li><li><a href="global.html#dataType">dataType</a></li><li><a href="global.html#daysStyle">daysStyle</a></li><li><a href="global.html#debug">debug</a></li><li><a href="global.html#decodeURI">decodeURI</a></li><li><a href="global.html#defineEnums">defineEnums</a></li><li><a href="global.html#defineRem">defineRem</a></li><li><a href="global.html#delay">delay</a></li><li><a href="global.html#deleteCookie">deleteCookie</a></li><li><a href="global.html#deleteDB">deleteDB</a></li><li><a href="global.html#deleteObject">deleteObject</a></li><li><a href="global.html#deleteRow">deleteRow</a></li><li><a href="global.html#deleteService">deleteService</a></li><li><a href="global.html#detectNavigator">detectNavigator</a></li><li><a href="global.html#detectOS">detectOS</a></li><li><a href="global.html#doLayout">doLayout</a></li><li><a href="global.html#doc">doc</a></li><li><a href="global.html#domTagName">domTagName</a></li><li><a href="global.html#download">download</a></li><li><a href="global.html#draggable">draggable</a></li><li><a href="global.html#drawCaption">drawCaption</a></li><li><a href="global.html#drawImage">drawImage</a></li><li><a href="global.html#drawList">drawList</a></li><li><a href="global.html#dsSchema">dsSchema</a></li><li><a href="global.html#dstype_change">dstype_change</a></li><li><a href="global.html#dynamic">dynamic</a></li><li><a href="global.html#edit">edit</a></li><li><a href="global.html#editRow">editRow</a></li><li><a href="global.html#empty">empty</a></li><li><a href="global.html#emptyImage">emptyImage</a></li><li><a href="global.html#encodeURI">encodeURI</a></li><li><a href="global.html#enumLabel">enumLabel</a></li><li><a href="global.html#enumText">enumText</a></li><li><a href="global.html#error">error</a></li><li><a href="global.html#exchange">exchange</a></li><li><a href="global.html#exeHotKeyFun">exeHotKeyFun</a></li><li><a href="global.html#expandAll">expandAll</a></li><li><a href="global.html#export">export</a></li><li><a href="global.html#fieldWidth">fieldWidth</a></li><li><a href="global.html#file">file</a></li><li><a href="global.html#fileDownloadServiceName">fileDownloadServiceName</a></li><li><a href="global.html#fileUploadServiceName">fileUploadServiceName</a></li><li><a href="global.html#findNode">findNode</a></li><li><a href="global.html#findObject">findObject</a></li><li><a href="global.html#findService">findService</a></li><li><a href="global.html#fire">fire</a></li><li><a href="global.html#fireResize">fireResize</a></li><li><a href="global.html#firstPage">firstPage</a></li><li><a href="global.html#fixed">fixed</a></li><li><a href="global.html#floating">floating</a></li><li><a href="global.html#formatApi">formatApi</a></li><li><a href="global.html#formatCurrency">formatCurrency</a></li><li><a href="global.html#formatCurrencyCN">formatCurrencyCN</a></li><li><a href="global.html#formatJson">formatJson</a></li><li><a href="global.html#formatLabels">formatLabels</a></li><li><a href="global.html#formatNumber">formatNumber</a></li><li><a href="global.html#formatString">formatString</a></li><li><a href="global.html#formatTimestamp">formatTimestamp</a></li><li><a href="global.html#from">from</a></li><li><a href="global.html#fullScreen">fullScreen</a></li><li><a href="global.html#funApplyByIOC">funApplyByIOC</a></li><li><a href="global.html#funBindByIOC">funBindByIOC</a></li><li><a href="global.html#get">get</a></li><li><a href="global.html#getApp">getApp</a></li><li><a href="global.html#getAppAuthorization">getAppAuthorization</a></li><li><a href="global.html#getAppConfig">getAppConfig</a></li><li><a href="global.html#getAppId">getAppId</a></li><li><a href="global.html#getAppToken">getAppToken</a></li><li><a href="global.html#getByteLength">getByteLength</a></li><li><a href="global.html#getCheckedNodes">getCheckedNodes</a></li><li><a href="global.html#getColumns">getColumns</a></li><li><a href="global.html#getControl">getControl</a></li><li><a href="global.html#getControlConfig">getControlConfig</a></li><li><a href="global.html#getCookie">getCookie</a></li><li><a href="global.html#getDPI">getDPI</a></li><li><a href="global.html#getData">getData</a></li><li><a href="global.html#getDocConfig">getDocConfig</a></li><li><a href="global.html#getDocument">getDocument</a></li><li><a href="global.html#getDom">getDom</a></li><li><a href="global.html#getElAttribute">getElAttribute</a></li><li><a href="global.html#getFieldValue">getFieldValue</a></li><li><a href="global.html#getFields">getFields</a></li><li><a href="global.html#getFile">getFile</a></li><li><a href="global.html#getFileName">getFileName</a></li><li><a href="global.html#getFormData">getFormData</a></li><li><a href="global.html#getFunctionName">getFunctionName</a></li><li><a href="global.html#getGlobalVariable">getGlobalVariable</a></li><li><a href="global.html#getHeight">getHeight</a></li><li><a href="global.html#getItem">getItem</a></li><li><a href="global.html#getItemById">getItemById</a></li><li><a href="global.html#getItemByName">getItemByName</a></li><li><a href="global.html#getItemByXtype">getItemByXtype</a></li><li><a href="global.html#getJsonSchema">getJsonSchema</a></li><li><a href="global.html#getKeyValue">getKeyValue</a></li><li><a href="global.html#getObjectByIndex">getObjectByIndex</a></li><li><a href="global.html#getObjectByKey">getObjectByKey</a></li><li><a href="global.html#getPaging">getPaging</a></li><li><a href="global.html#getPlugin">getPlugin</a></li><li><a href="global.html#getRecord">getRecord</a></li><li><a href="global.html#getRedjsHost">getRedjsHost</a></li><li><a href="global.html#getRedjsUrl">getRedjsUrl</a></li><li><a href="global.html#getRowData">getRowData</a></li><li><a href="global.html#getSchema">getSchema</a></li><li><a href="global.html#getSchemaList">getSchemaList</a></li><li><a href="global.html#getScrollHeight">getScrollHeight</a></li><li><a href="global.html#getSelectedNodes">getSelectedNodes</a></li><li><a href="global.html#getService">getService</a></li><li><a href="global.html#getStringWidth">getStringWidth</a></li><li><a href="global.html#getText">getText</a></li><li><a href="global.html#getTouched">getTouched</a></li><li><a href="global.html#getType">getType</a></li><li><a href="global.html#getUrlParam">getUrlParam</a></li><li><a href="global.html#getUserAgent">getUserAgent</a></li><li><a href="global.html#getValue">getValue</a></li><li><a href="global.html#getValueItem">getValueItem</a></li><li><a href="global.html#getView">getView</a></li><li><a href="global.html#getWhere">getWhere</a></li><li><a href="global.html#getWidth">getWidth</a></li><li><a href="global.html#getXhr">getXhr</a></li><li><a href="global.html#getZIndex">getZIndex</a></li><li><a href="global.html#globalVariables">globalVariables</a></li><li><a href="global.html#goTo">goTo</a></li><li><a href="global.html#gridColumns">gridColumns</a></li><li><a href="global.html#handleEvent">handleEvent</a></li><li><a href="global.html#handleUploadEvent">handleUploadEvent</a></li><li><a href="global.html#hasProperty">hasProperty</a></li><li><a href="global.html#hidden">hidden</a></li><li><a href="global.html#hide">hide</a></li><li><a href="global.html#httpGet">httpGet</a></li><li><a href="global.html#httpPost">httpPost</a></li><li><a href="global.html#httpRequest">httpRequest</a></li><li><a href="global.html#iframe_load">iframe_load</a></li><li><a href="global.html#imageDblClick">imageDblClick</a></li><li><a href="global.html#images">images</a></li><li><a href="global.html#indexEditServiceName">indexEditServiceName</a></li><li><a href="global.html#indexLoadServiceName">indexLoadServiceName</a></li><li><a href="global.html#info">info</a></li><li><a href="global.html#init">init</a></li><li><a href="global.html#initComponent">initComponent</a></li><li><a href="global.html#initComponentEx">initComponentEx</a></li><li><a href="global.html#initDropdownBox">initDropdownBox</a></li><li><a href="global.html#initImage">initImage</a></li><li><a href="global.html#insertItem">insertItem</a></li><li><a href="global.html#insertObject">insertObject</a></li><li><a href="global.html#insertService">insertService</a></li><li><a href="global.html#inset">inset</a></li><li><a href="global.html#isArray">isArray</a></li><li><a href="global.html#isBoolean">isBoolean</a></li><li><a href="global.html#isChrome">isChrome</a></li><li><a href="global.html#isCreated">isCreated</a></li><li><a href="global.html#isDate">isDate</a></li><li><a href="global.html#isDestroyed">isDestroyed</a></li><li><a href="global.html#isDisabled">isDisabled</a></li><li><a href="global.html#isEmpty">isEmpty</a></li><li><a href="global.html#isFunction">isFunction</a></li><li><a href="global.html#isHidden">isHidden</a></li><li><a href="global.html#isLoading">isLoading</a></li><li><a href="global.html#isMobile">isMobile</a></li><li><a href="global.html#isNaN">isNaN</a></li><li><a href="global.html#isNull">isNull</a></li><li><a href="global.html#isNullOrUndefined">isNullOrUndefined</a></li><li><a href="global.html#isNumber">isNumber</a></li><li><a href="global.html#isObject">isObject</a></li><li><a href="global.html#isReady">isReady</a></li><li><a href="global.html#isRendered">isRendered</a></li><li><a href="global.html#isString">isString</a></li><li><a href="global.html#isTrue">isTrue</a></li><li><a href="global.html#isType">isType</a></li><li><a href="global.html#isUndefined">isUndefined</a></li><li><a href="global.html#isView">isView</a></li><li><a href="global.html#isWeChat">isWeChat</a></li><li><a href="global.html#isWeChatApp">isWeChatApp</a></li><li><a href="global.html#itemCls">itemCls</a></li><li><a href="global.html#itemKeyMember">itemKeyMember</a></li><li><a href="global.html#itemLabelWidth">itemLabelWidth</a></li><li><a href="global.html#itemSelectedCls">itemSelectedCls</a></li><li><a href="global.html#itemXtype">itemXtype</a></li><li><a href="global.html#items">items</a></li><li><a href="global.html#jsonFormatter">jsonFormatter</a></li><li><a href="global.html#label">label</a></li><li><a href="global.html#lang">lang</a></li><li><a href="global.html#lastPage">lastPage</a></li><li><a href="global.html#layout">layout</a></li><li><a href="global.html#layoutAuto">layoutAuto</a></li><li><a href="global.html#layoutBorder">layoutBorder</a></li><li><a href="global.html#layoutContent">layoutContent</a></li><li><a href="global.html#layoutHbox">layoutHbox</a></li><li><a href="global.html#layoutItems">layoutItems</a></li><li><a href="global.html#layoutVbox">layoutVbox</a></li><li><a href="global.html#link">link</a></li><li><a href="global.html#listObject">listObject</a></li><li><a href="global.html#listObjects">listObjects</a></li><li><a href="global.html#listService">listService</a></li><li><a href="global.html#listeners">listeners</a></li><li><a href="global.html#load">load</a></li><li><a href="global.html#loadClass">loadClass</a></li><li><a href="global.html#loadCssFile">loadCssFile</a></li><li><a href="global.html#loadCtrlProperty">loadCtrlProperty</a></li><li><a href="global.html#loadData">loadData</a></li><li><a href="global.html#loadDocPages">loadDocPages</a></li><li><a href="global.html#loadFields">loadFields</a></li><li><a href="global.html#loadImage">loadImage</a></li><li><a href="global.html#loadIndex">loadIndex</a></li><li><a href="global.html#loadPlugin">loadPlugin</a></li><li><a href="global.html#loadScriptFile">loadScriptFile</a></li><li><a href="global.html#loadServiceApi">loadServiceApi</a></li><li><a href="global.html#loadServices">loadServices</a></li><li><a href="global.html#loadTemplateFile">loadTemplateFile</a></li><li><a href="global.html#mailTo">mailTo</a></li><li><a href="global.html#makeControl">makeControl</a></li><li><a href="global.html#makeObject">makeObject</a></li><li><a href="global.html#mappingUrl">mappingUrl</a></li><li><a href="global.html#maxLength">maxLength</a></li><li><a href="global.html#maxSize">maxSize</a></li><li><a href="global.html#md5">md5</a></li><li><a href="global.html#messageStyle">messageStyle</a></li><li><a href="global.html#metaInfo">metaInfo</a></li><li><a href="global.html#minSize">minSize</a></li><li><a href="global.html#model">model</a></li><li><a href="global.html#multiple">multiple</a></li><li><a href="global.html#name">name</a></li><li><a href="global.html#navigation">navigation</a></li><li><a href="global.html#newLine">newLine</a></li><li><a href="global.html#newRow">newRow</a></li><li><a href="global.html#next">next</a></li><li><a href="global.html#nextPage">nextPage</a></li><li><a href="global.html#nobr">nobr</a></li><li><a href="global.html#on">on</a></li><li><a href="global.html#onAfterInit">onAfterInit</a></li><li><a href="global.html#onAfterLayout">onAfterLayout</a></li><li><a href="global.html#onAfterRender">onAfterRender</a></li><li><a href="global.html#onAfterShow">onAfterShow</a></li><li><a href="global.html#onBeforeInit">onBeforeInit</a></li><li><a href="global.html#onBeforeLayout">onBeforeLayout</a></li><li><a href="global.html#onBeforeRender">onBeforeRender</a></li><li><a href="global.html#onBeforeShow">onBeforeShow</a></li><li><a href="global.html#onChanged">onChanged</a></li><li><a href="global.html#onPageSizeChanged">onPageSizeChanged</a></li><li><a href="global.html#on_checked">on_checked</a></li><li><a href="global.html#onchange">onchange</a></li><li><a href="global.html#ondelete">ondelete</a></li><li><a href="global.html#onload">onload</a></li><li><a href="global.html#onselect">onselect</a></li><li><a href="global.html#onview">onview</a></li><li><a href="global.html#openDB">openDB</a></li><li><a href="global.html#overflow">overflow</a></li><li><a href="global.html#pageIndexChanged">pageIndexChanged</a></li><li><a href="global.html#pageSizeList">pageSizeList</a></li><li><a href="global.html#page_type_changed">page_type_changed</a></li><li><a href="global.html#panelStyle">panelStyle</a></li><li><a href="global.html#patchButton">patchButton</a></li><li><a href="global.html#post">post</a></li><li><a href="global.html#postFileFromString">postFileFromString</a></li><li><a href="global.html#postFiles">postFiles</a></li><li><a href="global.html#pr_on_changed">pr_on_changed</a></li><li><a href="global.html#pr_rowdblclick">pr_rowdblclick</a></li><li><a href="global.html#previousPage">previousPage</a></li><li><a href="global.html#print">print</a></li><li><a href="global.html#printBorder">printBorder</a></li><li><a href="global.html#printCallStack">printCallStack</a></li><li><a href="global.html#proxy">proxy</a></li><li><a href="global.html#readFile">readFile</a></li><li><a href="global.html#readLocal">readLocal</a></li><li><a href="global.html#readOnly">readOnly</a></li><li><a href="global.html#readSession">readSession</a></li><li><a href="global.html#redirect">redirect</a></li><li><a href="global.html#refresh">refresh</a></li><li><a href="global.html#registerHotKey">registerHotKey</a></li><li><a href="global.html#remove">remove</a></li><li><a href="global.html#removeAll">removeAll</a></li><li><a href="global.html#removeCls">removeCls</a></li><li><a href="global.html#removeItem">removeItem</a></li><li><a href="global.html#removeLocal">removeLocal</a></li><li><a href="global.html#removeSession">removeSession</a></li><li><a href="global.html#renderTo">renderTo</a></li><li><a href="global.html#render_html">render_html</a></li><li><a href="global.html#requestService">requestService</a></li><li><a href="global.html#resetAjaxConfig">resetAjaxConfig</a></li><li><a href="global.html#response">response</a></li><li><a href="global.html#restart">restart</a></li><li><a href="global.html#rowclick">rowclick</a></li><li><a href="global.html#rowdblclick">rowdblclick</a></li><li><a href="global.html#rows">rows</a></li><li><a href="global.html#run">run</a></li><li><a href="global.html#saveAlbum">saveAlbum</a></li><li><a href="global.html#saveHandler">saveHandler</a></li><li><a href="global.html#scale">scale</a></li><li><a href="global.html#scrollCurrentIntoView">scrollCurrentIntoView</a></li><li><a href="global.html#scrollIntoView">scrollIntoView</a></li><li><a href="global.html#searchHandler">searchHandler</a></li><li><a href="global.html#select">select</a></li><li><a href="global.html#selectAll">selectAll</a></li><li><a href="global.html#selectColumn">selectColumn</a></li><li><a href="global.html#selectControl">selectControl</a></li><li><a href="global.html#selectNode">selectNode</a></li><li><a href="global.html#selectPage">selectPage</a></li><li><a href="global.html#selectRow">selectRow</a></li><li><a href="global.html#selected">selected</a></li><li><a href="global.html#selectedOnClick">selectedOnClick</a></li><li><a href="global.html#selectedOnDblClick">selectedOnDblClick</a></li><li><a href="global.html#selectorServices">selectorServices</a></li><li><a href="global.html#services">services</a></li><li><a href="global.html#setAppToken">setAppToken</a></li><li><a href="global.html#setControlProperty">setControlProperty</a></li><li><a href="global.html#setDisabled">setDisabled</a></li><li><a href="global.html#setDocumentIndex">setDocumentIndex</a></li><li><a href="global.html#setDocumentTitle">setDocumentTitle</a></li><li><a href="global.html#setDomToken">setDomToken</a></li><li><a href="global.html#setElAttribute">setElAttribute</a></li><li><a href="global.html#setElStyle">setElStyle</a></li><li><a href="global.html#setGlobalVariable">setGlobalVariable</a></li><li><a href="global.html#setHeaderVisible">setHeaderVisible</a></li><li><a href="global.html#setHref">setHref</a></li><li><a href="global.html#setNewButtons">setNewButtons</a></li><li><a href="global.html#setPageIndex">setPageIndex</a></li><li><a href="global.html#setPaging">setPaging</a></li><li><a href="global.html#setPosition">setPosition</a></li><li><a href="global.html#setSearchColumns">setSearchColumns</a></li><li><a href="global.html#setUrlParam">setUrlParam</a></li><li><a href="global.html#setValue">setValue</a></li><li><a href="global.html#set_data">set_data</a></li><li><a href="global.html#showAlbumsDetail">showAlbumsDetail</a></li><li><a href="global.html#showDialog">showDialog</a></li><li><a href="global.html#showDialogOnLeft">showDialogOnLeft</a></li><li><a href="global.html#showDialogOnRight">showDialogOnRight</a></li><li><a href="global.html#showDropdownBox">showDropdownBox</a></li><li><a href="global.html#showError">showError</a></li><li><a href="global.html#showIndex">showIndex</a></li><li><a href="global.html#showItem">showItem</a></li><li><a href="global.html#showLoading">showLoading</a></li><li><a href="global.html#showModalDialog">showModalDialog</a></li><li><a href="global.html#showModelView">showModelView</a></li><li><a href="global.html#showTip">showTip</a></li><li><a href="global.html#showWaiting">showWaiting</a></li><li><a href="global.html#size">size</a></li><li><a href="global.html#sleep">sleep</a></li><li><a href="global.html#sort">sort</a></li><li><a href="global.html#src">src</a></li><li><a href="global.html#start">start</a></li><li><a href="global.html#statechange">statechange</a></li><li><a href="global.html#stop">stop</a></li><li><a href="global.html#submit">submit</a></li><li><a href="global.html#tabIndex">tabIndex</a></li><li><a href="global.html#templates">templates</a></li><li><a href="global.html#testServerHost">testServerHost</a></li><li><a href="global.html#text">text</a></li><li><a href="global.html#textMember">textMember</a></li><li><a href="global.html#timeout">timeout</a></li><li><a href="global.html#timing">timing</a></li><li><a href="global.html#title">title</a></li><li><a href="global.html#title_format">title_format</a></li><li><a href="global.html#toFormDataString">toFormDataString</a></li><li><a href="global.html#toHtml">toHtml</a></li><li><a href="global.html#toJson">toJson</a></li><li><a href="global.html#toJsonString">toJsonString</a></li><li><a href="global.html#toMultipartFormData">toMultipartFormData</a></li><li><a href="global.html#toPxValue">toPxValue</a></li><li><a href="global.html#toString">toString</a></li><li><a href="global.html#toggle">toggle</a></li><li><a href="global.html#toggleCls">toggleCls</a></li><li><a href="global.html#token">token</a></li><li><a href="global.html#transform">transform</a></li><li><a href="global.html#tree_select_ctrl">tree_select_ctrl</a></li><li><a href="global.html#types">types</a></li><li><a href="global.html#unResize">unResize</a></li><li><a href="global.html#updateObject">updateObject</a></li><li><a href="global.html#updateRow">updateRow</a></li><li><a href="global.html#updateService">updateService</a></li><li><a href="global.html#upload">upload</a></li><li><a href="global.html#uploadComplete">uploadComplete</a></li><li><a href="global.html#uploadProgress">uploadProgress</a></li><li><a href="global.html#uploadStart">uploadStart</a></li><li><a href="global.html#valueMember">valueMember</a></li><li><a href="global.html#viewAllImages">viewAllImages</a></li><li><a href="global.html#viewHandler">viewHandler</a></li><li><a href="global.html#warn">warn</a></li><li><a href="global.html#writeLocal">writeLocal</a></li><li><a href="global.html#writeSession">writeSession</a></li><li><a href="global.html#zoomView">zoomView</a></li></ul>
</nav>

<br class="clear">

<footer>
    Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 4.0.2</a> on Wed May 10 2023 10:57:22 GMT+0800 (中国标准时间)
</footer>

<script> prettyPrint(); </script>
<script src="scripts/linenumber.js"> </script>
</body>
</html>
